#ifndef CONTENT_H
#define CONTENT_H

#include <QWidget>
#include <QTableWidgetItem>
#include <QMessageBox>
#include <QString>
#include <QDate>
#include <QJsonObject>
#include <memory>  // 用于智能指针管理

namespace Ui {
class content;
}

class content : public QWidget
{
    Q_OBJECT

public:
    explicit content(QWidget *parent = nullptr);
    ~content();

private slots:
    // 游戏内容相关槽函数
    void on_addGameContentButton_clicked();
    void on_editGameContentButton_clicked();
    void on_deleteGameContentButton_clicked();
    void on_gameContentSearchButton_clicked();
    void on_gameContentResetButton_clicked();
    void on_gameContentPrevPageButton_clicked();
    void on_gameContentNextPageButton_clicked();
    void on_gameContentPageSpinBox_valueChanged(int value);
    void on_gameContentPageSizeComboBox_currentIndexChanged(int index);
    
    // 数据获取完成后的回调槽函数
    void handleGameContentDataFetched(bool success, const QJsonObject& response);
    void handleGameContentError(const QString& errorMsg);
    
    // 公告管理相关槽函数
    void on_addAnnouncementButton_clicked();
    
    // 获取公告数据
    void fetchAnnouncements();
    
    // 处理获取到的公告数据
    void handleAnnouncementDataFetched(bool success, const QJsonObject& response);
    
    // 处理公告错误
    void handleAnnouncementError(const QString& errorMsg);
    
    // 显示公告详情
    void showAnnouncementDetail(const QJsonObject& announcementData);
    
    void on_editAnnouncementButton_clicked();
    void on_deleteAnnouncementButton_clicked();
    void on_announcementSearchButton_clicked();
    void on_announcementResetButton_clicked();
    void on_announcementPrevPageButton_clicked();
    void on_announcementNextPageButton_clicked();
    void on_announcementPageSpinBox_valueChanged(int value);
    void on_announcementPageSizeComboBox_currentIndexChanged(int index);
    
    // 标签页切换槽函数
    void on_mainTabWidget_currentChanged(int index);

private:
    Ui::content *ui;
    
    // 当前分页数据
    int m_gameContentCurrentPage;    // 游戏内容当前页码
    int m_gameContentPageSize;       // 游戏内容每页显示数量
    int m_announcementCurrentPage;   // 公告管理当前页码
    int m_announcementPageSize;      // 公告管理每页显示数量
    
    // 总数据量
    int m_gameContentTotalCount;     // 游戏内容总数量
    int m_announcementTotalCount;    // 公告总数量
    
    // 当前搜索和筛选参数
    QString m_gameContentSearchKeyword;
    QString m_gameContentSearchCategory;
    QString m_gameContentSearchStatus;
    QString m_gameContentSearchDateStart;
    QString m_gameContentSearchDateEnd;
    
    // 公告搜索参数
    QString m_announcementSearchKeyword;
    QString m_announcementSearchStatus;
    
    // 初始化函数
    void initUI();
    
    // 游戏内容相关辅助函数
    void updateGameContentTable();
    void updateGameContentPaginationInfo();
    void loadGameContentCategories();
    
    // 数据获取相关函数
    void fetchGameContents();
    QJsonObject prepareGameContentSearchParams();
    void showLoadingIndicator(bool show);
    
    // 公告管理相关辅助函数
    void updateAnnouncementTable();
    void updateAnnouncementPaginationInfo();
    QJsonObject prepareAnnouncementSearchParams();
    
    // 通用辅助函数
    QString getStatusText(const QString& status, bool isGameContent = true);
    QTableWidgetItem* createNonEditableItem(const QString& text);
    QTableWidgetItem* createStatusItem(const QString& status, bool isGameContent = true);
    
    // 错误处理函数
    void handleAPIError(const QString& errorMsg, const QString& operation);
};

#endif // CONTENT_H
